package sms

import (
	"context"
	// "encoding/json"
	"fmt"
	"github.com/go-resty/resty/v2"
)

type VerifyCodeReq struct {
	Phone       string `json:"phone"`        // 手机号
	AppId       string `json:"app_id"`       // 分配的appId
	MessageType string `json:"message_type"` // 验证类型
	Code        string `json:"code"`         // 验证码
}

type VerifyCodeRes struct {
	Message      string `json:"message"`       // 验证结果描述
	Status       int32  `json:"status"`        // 200
	VerifyResult bool   `json:"verify_result"` // true: 验证码正确，false：验证码错误
}

func (s *SmsClient) VerifyCode(ctx context.Context, req *VerifyCodeReq) (res *VerifyCodeRes, err error) {
	// bytes, err := json.Marshal(req)
	// if err != nil {
	// 	return
	// }
	url := fmt.Sprintf("%s/api/v1/code/verify", s.endpoint)
	result := &smsInvokeRes[VerifyCodeRes]{}
	errRes := &smsErrorRes{}
	client := resty.New()
	_, err = client.R().
		SetContext(ctx).
		SetHeader("Content-Type", "application/json").
		SetBody(req).
		SetResult(result).
		SetError(errRes).
		Post(url)
	if err != nil {
		return
	}
	if !result.Success {
		err = fmt.Errorf("VerifyCode Err:%s", errRes.Msg)
		return
	}
	res = result.Data
	return
}
